// @File:           RedisTool.h
// @ProjectName:    mosquitto_auth_plugin
// @Description:    ${description}
// @Author:         wujehy
// @Email:          wujehy@qq.com
// @Time:           2021-03-16 14:47

#ifndef MOSQUITTO_AUTH_PLUGIN_REDISTOOL_H
#define MOSQUITTO_AUTH_PLUGIN_REDISTOOL_H

#include <string>
#define REDIS_TOOL_OK "OK"
//#define REDIS_TOOL_NIL "nil"
// redis 简单的封装工具
struct redisContext;

class RedisTool {
private:
    redisContext *context = nullptr;
    std::string host="localhost"; ///< 存放redis 的 host
    int port=6379; ///< 存放redis 的 端口
    std::string db; ///< 存放 redis 的 存储的数据库
    std::string password; ///< 存放 redis 的 密码

public:
    RedisTool();

    /**
     * @brief 初始化redis
     * @return
     */
    int init();

    virtual ~RedisTool();

    void setHost(const std::string &host);

    void setPort(int port);

    void setDb(const std::string &db);

    void setPassword(const std::string &password);

    /**
     * @brief 设置 key
     * @param [in]key
     * @param [in]value
     * @param [in]expire 可选 过期时间， >0 生效
     * @return 执行结果状态
     */
    int setKey(const std::string &key , const std::string & value = "" ,int expire = 0 ) ;
    /**
     * @brief 获取key 的值
     * @param [in]key
     * @param [out]value
     * @return 返回状态
     */
    int getKey(const std::string &key , std::string &value) ;

};


#endif //MOSQUITTO_AUTH_PLUGIN_REDISTOOL_H
